# 在Python中，定义一个函数要使用def语句，依次写出函数名、括号、括号中的参数和冒号:，然后，在缩进块中编写函数体，函数的返回值用return语句返回。
# 我们以自定义一个求绝对值的my_abs函数为例：
import math


def studentAge(x):
    if x >= 0:
        return x
    else:
        return 100


# 调用函数
print(studentAge(-2))


# 空函数,pass语句什么都不做，那有什么用？实际上pass可以用来作为占位符，比如现在还没想好怎么写函数的代码，就可以先放一个pass，让代码能运行起来。
def none():
    pass

    if 10 > 0:
        none()


# 定义参数检查
def parmarCheck(x):
    if not isinstance(x, (int, float)):
        return 'bad parmar'
    elif x > 10:
        return x
    else:
        return '我很好'


print(parmarCheck(100))
print(parmarCheck('100'))
print(parmarCheck(1))


# 返回多个值,比如在游戏中经常需要从一个点移动到另一个点，给出坐标、位移和角度，就可以计算出新的坐标：


def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny


a, b = move(100, 90, 89, math.pi / 5)
print(a, b)
print(move(78, 90, 12, math.pi / 5))


# 请定义一个函数quadratic(a, b, c)，接收3个参数，返回一元二次方程 ax^2+bx+c=0
# ax2+bx+c=0 的两个解。
def quadratic(a, b, c):
    data = 4 * a * c - b ** 2
    if data > 0:
        x1 = (-b + math.sqrt(data)) / 2 * a
        x2 = (-b - math.sqrt(data)) / 2 * a
        return ("方程有两个不相等的解", x1, x2)
    elif data == 0:
        x1 = (-b + math.sqrt(data)) / 2 * a
        x2 = (-b - math.sqrt(data)) / 2 * a
        return ("方程有两个相等的解", x1, x2)
    else:
        return ("方程没有实数根")


print(quadratic(1, 2, 3))
print(quadratic(1, 2, 6))
